using System;
using Sinacor.Infra.UI.Common;
using Sinacor.Infra.UI.Security.Services;
using System.Collections.Generic;
using Sinacor.Infra.Common;
using Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.ManutencaoOrdens.Parametro;

namespace Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Translator.DataContractToModel
{
    /// <summary>
    /// Traduz um contrato de dados em um modelo
    /// </summary>
    public class Parametro
    {
		public Parametro(){}

		/// <summary>
        /// ToParametro
		/// </summary>
		/// <param name="from"></param>
		/// <returns></returns>
		public Model.Parametro ToParametro(ParametroResponse from)
        {
            Model.Parametro retorno = new Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Parametro();

            if (from == null)
                return null;

            retorno.AberturaOrdemOpcoesIndice = from.AberturaOrdemOpcoesIndice;
            retorno.AgenteCompensacao = from.AgenteCompensacao;
            retorno.AposPeriodoCancelamentoOrdens = from.AposPeriodoCancelamentoOrdens;
            retorno.BloqueioClientes = from.BloqueioClientes;
            retorno.BloqueioRecepcaoOfertas = from.BloqueioRecepcaoOfertas;
            retorno.CalculoAutomaticoFinanceiro = from.CalculoAutomaticoFinanceiro;
            retorno.CaminhoArquivoOrdem = from.CaminhoArquivoOrdem;
            retorno.CancelaValidadeOrdem = from.CancelaValidadeOrdem;
            retorno.Carteira268AutomaticaTermo = from.Carteira268AutomaticaTermo;
            retorno.CasaOrdemPreBoleto = from.CasaOrdemPreBoleto;
            
            if(from.CodigoAgenteCompensacao.HasValue)
            retorno.CodigoAgenteCompensacao = from.CodigoAgenteCompensacao.Value;

            if(from.CodigoMensagem.HasValue)
            retorno.CodigoMensagem = from.CodigoMensagem.Value;

            if(from.CPMF.HasValue)
            retorno.CPMF = from.CPMF.Value;

            if(from.DiasCancelamentoOrdens.HasValue)
            retorno.DiasCancelamentoOrdens = from.DiasCancelamentoOrdens.Value;

            if(from.OperadorAutomaticoExercicio.HasValue)
            retorno.OperadorAutomaticoExercicio = from.OperadorAutomaticoExercicio.Value;

            if(from.OperadorCustodia.HasValue)
            retorno.OperadorCustodia = from.OperadorCustodia.Value;

            if(from.OperadorOrdemSemIdentificacao.HasValue)
            retorno.OperadorOrdemSemIdentificacao = from.OperadorOrdemSemIdentificacao.Value;

            if(from.OperadorPreferenciasPadrao.HasValue)
            retorno.OperadorPreferenciasPadrao = from.OperadorPreferenciasPadrao.Value;

            if(from.TipoCorretagemHomeBroker.HasValue)
            retorno.TipoCorretagemHomeBroker = from.TipoCorretagemHomeBroker.Value;

            retorno.Compliance = from.Compliance;
            retorno.DescontoOperacao = from.DescontoOperacao;
            retorno.DesprezaOfertaOperadorApontado = from.DesprezaOfertaOperadorApontado;            
            retorno.GravaSempreObservacao = from.GravaSempreObservacao;
            retorno.IndicadorAdministradoConcorrente = (from.IndicadorAdministradoConcorrente.ToUpper() == "S");
            retorno.IndicadorDigitoCliente = from.IndicadorDigitoCliente;
            retorno.InicioPregao = from.InicioPregao;
            retorno.JuntaFracionario = from.JuntaFracionario;
            retorno.LimiteCredito = from.LimiteCredito;
            retorno.MantemTelaPreBoletoAberta = from.MantemTelaPreBoletoAberta;
            retorno.NaoExecutadaCancelamentoOrdens = from.NaoExecutadaCancelamentoOrdens;
            retorno.NumeracaoAtributoExterno = from.NumeracaoAtributoExterno;                        
            retorno.ParaAnoSeguinte = from.ParaAnoSeguinte;
            retorno.PreBoletoAumentaOrdem = from.PreBoletoAumentaOrdem;
            retorno.RestoDistribuicaoUltimoCliente = from.RestoDistribuicaoUltimoCliente;
            retorno.SaldoNegociavelCustodia = from.SaldoNegociavelCustodia;
            retorno.SinalMegabolsa = from.SinalMegabolsa;            
            retorno.TipoLiquidacaoCAutomatica = from.TipoLiquidacaoCAutomatica;            

            return retorno;
		}

	}

}